<?php

/**
 * UserIdentity represents the data needed to identity a user.
 * It contains the authentication method that checks if the provided
 * data can identity the user.
 */
class UserIdentity extends CUserIdentity
{
    private $_id; 
    private $_admin; 
    private $_username; 
    private $_departmentid; 
	private $_departmentname; 
	/**
	 * Authenticates a user.
	 * The example implementation makes sure if the username and password
	 * are both 'demo'.
	 * In practical applications, this should be changed to authenticate
	 * against some persistent user identity storage (e.g. database).
	 * @return boolean whether authentication succeeds.
	 */
	public function authenticate()
	{
        $user = User::model()->find("username=:username" , array(":username"=>$this->username));

        if(empty($user))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        else
            $this->errorCode=self::ERROR_NONE;

        if(!$this->errorCode){ 
            $this->_id = $user->id;
            $this->_admin = false;
            $this->_username = $user->username;
            $this->_departmentid = $user->departmentid;
            $department = Department::model()->findByPk($user->departmentid);
            if ($department !== null) {
                $this->_departmentname = $department->name;
                $this->setState('departmentname', $department->name);
            }else{
                $this->setState('departmentname', "");
            }

            $this->setState('departmentid', $user->departmentid);
            $this->setState('username', $user->username);
        }
        return !$this->errorCode;
	}


    /**
     * 返回用户的id 
     * @return id
     * @author 
     **/ 
    public function getId()
    {
        return $this->_id;
    }

    /**
     * 设置用户的id 
     *
     * @return void
     * @author 
     **/  
    public function setId($id){
        $this->_id = $id;
    }
   
   /**
     * 设置用户的id 
     *
     * @return void
     * @author 
     **/  
    public function getAdmin(){
        return $this->_admin;
    }


}